//导入插件
import Vue from 'vue'
import MintUi from 'mint-ui'
import VueRouter from 'vue-router'
import VueResource from 'vue-resource'//实现异步加载
import moment from 'moment'//格式化时间插件
import vuePreview from 'vue-preview'//缩略图插件
import Vuex from 'vuex'

Vue.use(MintUi);
Vue.use(VueRouter);
Vue.use(VueResource);
Vue.use(vuePreview);
Vue.use(Vuex);

Vue.http.options.root = 'http://www.liulongbin.top:3005/';
//定义全局的POST编码请求
Vue.http.options.emulateJSON = true;

import 'mint-ui/lib/style.css'
import '../../dist/css/mui.min.css'
import '../../dist/css/icons-extra.css'
import  './global.css'

//引入文件
import app from './app.vue'
import router from './router.js'


// 定义全局过滤器
Vue.filter('dateFormat',function (datastr,pattern = "YYYY-MM-DD HH:mm:ss") {
    return moment(datastr).format(pattern)
});

var cart = JSON.parse(localStorage.getItem('cart')||'[]');
var store = new Vuex.Store({

    state:{ //this.#store.state.XXX
        cart:cart
    },
    mutations:{//this.$store.commit.XXX('方法的名称'，按需传递唯一的参数)

        addtocar(state,goodsinfo){
            var flag = false;

            // 如果购物车中有该商品了， 只要 把数量 传递过去
            state.cart.some(item => {
                if(item.id == goodsinfo.id){
                    item.count = parseInt(goodsinfo.count);
                    flag = true;
                    return true;
                }
            });
            //如果最终循环完毕，得到的结果是flag是false，把商品直接push到购物车中
            if(!flag){
                state.cart.push(goodsinfo);
            }
            // 当 更新 cart 值后，把 cart 数组， 存储到本地的 localStorage 中
            localStorage.setItem('cart',JSON.stringify(state.cart));
        },
        updateGoodsinfo(state,goodsinfo){//修改购物车中商品的数量值
            state.cart.some(item=>{
                if(item.id == goodsinfo.id){
                    item.count = parseInt(goodsinfo.count);
                    return true
                }
            });
            //当改变商品的数量是，把最新的购物车的数量， 保存到 本地存储中
            localStorage.setItem('cart',JSON.stringify(state.cart));
        },
        removeFromCart(state,id){
            state.cart.some((item,i) =>{
                if(item.id == id){
                    state.cart.splice(i,1)
                    return true
                }
            });
            //将删除完毕的最新数据 存储到本地中
            localStorage.setItem('cart',JSON.stringify(state.cart));
        },
        updateGoodsSelected(state,info){
            state.cart.some(item=> {
                if(item.id == info.id){
                    item.selected = info.selected
                }
            });
            localStorage.setItem('cart',JSON.stringify(state.cart));
        }
    },
    getters:{//this.$store.getters.XXX
        getAllCount(state){
            var c =0;
            state.cart.forEach(item => {
                c += item.count;
            });
            return c
        },
        getcount(state){
            var o = [];
            state.cart.forEach(item => {
                o[item.id] = item.count;

            });
            return o
        },
        getGoodsSelected(state){
            var a = {};
            state.cart.some(item=>{
                a[item.id] = item.selected;

            });
            return a
        },
        getGoodsCountAndAmount(state){
            var  o = {
                count:0,//勾选的数量
                amount:0//勾选商品的总价
            };
            state.cart.forEach(item=>{
                if(item.selected){

                    o.count += item.count;
                    o.amount += item.count * item.price;
                    // console.log(item.count+"-----"+o.amount+"------"+item.price);
                }
            });
            return o;
        }
    }
});

new Vue({

    el:'.app',
    render: c => c(app),
    router,
    store
});